package modelo;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.text.ParseException;
public class Herramientas {

	private  SimpleDateFormat dateFormat;
	
	public Herramientas(){
		
	 this.dateFormat = new SimpleDateFormat("dd-MM-yyyy"); //a�o-mes-dia

	}
		    
//metodo para validar si la fecha es correcta
public boolean isDate(String fecha) {
		if (fecha == null)
			return false;

	    
	    if (fecha.trim().length() != dateFormat.toPattern().length())
	    	return false;

	    dateFormat.setLenient(false);

	    try {
	    	dateFormat.parse(fecha.trim());
	    }
	    catch (ParseException pe) {
	    	return false;
	    }
	    return true;		

}


public boolean fecha1EsAnterior(String fecha1, String fecha2){
	

	  
	  // El m�todo parse devuelve null si no se ha podido parsear el string en  seg�n el formato indicado. Este m�todo lanza una excepci�n NullPointer  exception si alguno de sus par�metros es null 
	  Date fechaa = dateFormat.parse(fecha1 , new ParsePosition(0));
	  
	  // El m�todo parse devuelve null si no se ha podido parsear el string en  seg�n el formato indicado. Este m�todo lanza una excepci�n NullPointer  exception si alguno de sus par�metros es null 
	  Date fechab = dateFormat.parse(fecha2 , new ParsePosition(0));

	  // Comparaciones
	   
	  if ( fechaa.before(fechab) )
		  return true;
	  else
		  return false;     
	
}

	public boolean fecha1EsPosterior(String fecha1, String fecha2){
	

	  
	  // El m�todo parse devuelve null si no se ha podido parsear el string en  seg�n el formato indicado. Este m�todo lanza una excepci�n NullPointer  exception si alguno de sus par�metros es null 
	  Date fechaa = dateFormat.parse(fecha1 , new ParsePosition(0));
	  
	  // El m�todo parse devuelve null si no se ha podido parsear el string en  seg�n el formato indicado. Este m�todo lanza una excepci�n NullPointer  exception si alguno de sus par�metros es null 
	  Date fechab = dateFormat.parse(fecha2 , new ParsePosition(0));

	  // Comparaciones
	   
	  if ( fechaa.after(fechab) )
		  return true;
	  else
		  return false;     
	
}

	public String obtenerFechaDeHoy(){
	
	Calendar c = Calendar.getInstance();
	
	String  dia,mes,annio,fechaParseadas;
	int mesMenosUno;
	
	
	mesMenosUno = c.get(Calendar.MONTH)+1 ;
	dia = Integer.toString(c.get(Calendar.DATE));
	mes = Integer.toString(mesMenosUno);
	annio = Integer.toString(c.get(Calendar.YEAR));

	fechaParseadas = dia+"-"+mes+"-"+annio;
	
	return fechaParseadas;
	}
	
	public String fechaProximos7Dias(){
		
		Calendar c = Calendar.getInstance();
		
		String  dia,mes,annio,fechaParseadas;
		int mesMenosUno,  diaMasSiete;
		
		diaMasSiete = c.get(Calendar.DATE) +7;
		mesMenosUno = c.get(Calendar.MONTH)+1 ;
		dia = Integer.toString(diaMasSiete);
		mes = Integer.toString(mesMenosUno);
		annio = Integer.toString(c.get(Calendar.YEAR));

		fechaParseadas = dia+"-"+mes+"-"+annio;
		
		
		
		return fechaParseadas;
	}
	
	public boolean fechaDentroDeLaSemana(String Fecha){
		
		if ((this.fecha1EsPosterior(Fecha,this.obtenerFechaDeHoy() ) )& 
			(this.fecha1EsAnterior(Fecha, this.fechaProximos7Dias() )) ){
			
			return true;
		}
		
		return false;
	}
	    

	    //metodo para validar correo electronio
	public boolean isEmail(String correo) {
	        Pattern pat = null;
	        Matcher mat = null;        
	        pat = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
	        mat = pat.matcher(correo);
	        if (mat.find()) {
	            System.out.println("[" + mat.group() + "]");
	            return true;
	        }else{
	            return false;
	        }        
	    }
	
}
